package com.zjcloud.jwgl.service;

import java.util.List;
import com.zjcloud.jwgl.domain.AcConstraintType;

/**
 * 约束类型Service接口
 * 
 * @author zjcloud
 * @date 2024-01-01
 */
public interface IAcConstraintTypeService 
{
    /**
     * 查询约束类型
     * 
     * @param id 约束类型主键
     * @return 约束类型
     */
    public AcConstraintType selectAcConstraintTypeById(Long id);

    /**
     * 根据类型编码查询约束类型
     * 
     * @param typeCode 类型编码
     * @return 约束类型
     */
    public AcConstraintType selectAcConstraintTypeByCode(String typeCode);

    /**
     * 查询约束类型列表
     * 
     * @param acConstraintType 约束类型
     * @return 约束类型集合
     */
    public List<AcConstraintType> selectAcConstraintTypeList(AcConstraintType acConstraintType);

    /**
     * 查询启用的约束类型列表
     * 
     * @return 约束类型集合
     */
    public List<AcConstraintType> selectEnabledConstraintTypes();

    /**
     * 根据分类查询约束类型列表
     * 
     * @param category 分类(HARD-硬约束 SOFT-软约束)
     * @return 约束类型集合
     */
    public List<AcConstraintType> selectConstraintTypesByCategory(String category);

    /**
     * 查询系统内置约束类型列表
     * 
     * @return 约束类型集合
     */
    public List<AcConstraintType> selectSystemConstraintTypes();

    /**
     * 新增约束类型
     * 
     * @param acConstraintType 约束类型
     * @return 结果
     */
    public int insertAcConstraintType(AcConstraintType acConstraintType);

    /**
     * 修改约束类型
     * 
     * @param acConstraintType 约束类型
     * @return 结果
     */
    public int updateAcConstraintType(AcConstraintType acConstraintType);

    /**
     * 批量删除约束类型
     * 
     * @param ids 需要删除的约束类型主键集合
     * @return 结果
     */
    public int deleteAcConstraintTypeByIds(Long[] ids);

    /**
     * 删除约束类型信息
     * 
     * @param id 约束类型主键
     * @return 结果
     */
    public int deleteAcConstraintTypeById(Long id);

    /**
     * 检查类型编码是否存在
     * 
     * @param typeCode 类型编码
     * @return 结果
     */
    public int checkTypeCodeUnique(String typeCode);

    /**
     * 检查类型编码是否存在(排除指定ID)
     * 
     * @param typeCode 类型编码
     * @param id 排除的ID
     * @return 结果
     */
    public int checkTypeCodeUniqueExcludeId(String typeCode, Long id);

    /**
     * 更新约束类型状态
     * 
     * @param id 约束类型ID
     * @param enabled 启用状态
     * @return 结果
     */
    public int updateConstraintTypeStatus(Long id, String enabled);

    /**
     * 批量更新约束类型状态
     * 
     * @param ids 约束类型ID数组
     * @param enabled 启用状态
     * @return 结果
     */
    public int batchUpdateConstraintTypeStatus(Long[] ids, String enabled);
}